#include <iostream>

// // 1. 饿汉模式
// class Singleton
// {
// private:
//     Singleton() {
//         std::cout << "单例对象构造成功!" << std::endl;
//     };
//     ~Singleton() {};
// public:
//     Singleton(const Singleton&) = delete;
//     Singleton& operator=(const Singleton&) = delete;
//     static Singleton& GetInstance()
//     {
//         return _ston;
//     }
// private:
//     static Singleton _ston;
// };
// Singleton Singleton::_ston;


// 2. 懒汉模式

class Singleton
{
private:
    Singleton(){
        std::cout << "单例对象构造成功!" << std::endl;
    }
    ~Singleton(){}
public:
    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton&) = delete;
    static Singleton& GetInstance()
    {
        static Singleton _ston;
        return _ston;
    }
};

int main()
{
    Singleton::GetInstance();
    return 0;
}